package factory.abstractf;

/**
 * 抽象工厂模式
 * 1.不同的产品系列，有较多共性，如JDBC实现后可操作各种数据库
 * 2.将对象的创建和使用分开
 * 3.实现跨平台兼容
 * =>
 * spring的BeanFactory，在调用.getBean()方法时，获取bean的实例
 * Mybatis的SqlSessionFactory为抽象工厂，SqlSession为抽象产品
 */
public class AbstractTest {
    public static void main(String[] args) {
        //晨光测试
        AbstractFactory cgFactory = new ChenGuangFactory();
        cgFactory.createPen().write();
        cgFactory.createPencil().draw();
        //真彩测试
        AbstractFactory zcFactory = new ZhenCaiFactory();
        zcFactory.createPen().write();
        zcFactory.createPencil().draw();
    }
}
